package top.huxy.boot.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @Classname Master
 * @Description 方法上标注此注解，会判断当前请求中的Admin是否有权限，如果没有，则不会执行该方法。
 * @Date 2021/10/18 17:00
 * @Created by huxy
 * @see top.huxy.boot.aspect.MasterAspect
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Master {
    Role value() default Role.SUPPER_ADMIN;

    String msg() default "";

    enum Role {
        SUPPER_ADMIN(1, "只有root才能操作"),
        NORMAL_ADMIN(5, "只有管理员才能操作"),
        VISITOR_USER(9, "操作被拒绝");

        private int role;
        private String msg;

        Role(int i, String defaultMsg) {
            role = i;
            this.msg = defaultMsg;
        }

        public boolean hasAble(int i) {
            if (i < 1) return false;
            return i <= role;
        }

        public String msg() {
            return msg;
        }
    }
}
